de255caa5a51f5562f5b3b8964a60eb2ae797e18,src/gwt/src/org/rstudio/core/client/widget/ShortcutInfoPanel.java,ShortcutInfoPanel,ShortcutInfoPanel,#,34

Before Change


      SafeHtmlBuilder sb = new SafeHtmlBuilder();
      List<ShortcutInfo> shortcuts = 
            ShortcutManager.INSTANCE.getActiveShortcutInfo();
      sb.appendHtmlConstant("<table><tr><td>");
      for (int i = 0; i < shortcuts.size(); i++)
      {
         ShortcutInfo info = shortcuts.get(i);
         if (info.getDescription() == null ||
             info.getShortcut() == null)
         {
            continue;
         }
         sb.appendHtmlConstant("<strong>");
         sb.appendHtmlConstant(info.getShortcut());
         sb.appendHtmlConstant("</strong>: ");
         sb.appendEscaped(info.getGroupName() + " - " + info.getDescription());
         sb.appendHtmlConstant("</br>");
         if ((i + 1) % Math.floor(shortcuts.size() / 3) == 0)
            sb.appendHtmlConstant("</td><td>");
      }
      sb.appendHtmlConstant("</td></tr></table>");
      HTMLPanel panel = new HTMLPanel(sb.toSafeHtml());

After Change


      sb.appendHtmlConstant("<table><tr>");
      for (String groupName: groupNames)
      {
         sb.appendHtmlConstant("<td><h2>");
         sb.appendEscaped(groupName);
         sb.appendHtmlConstant("</h2><table>");
         for (int i = 0; i < shortcuts.size(); i++)
         {
            ShortcutInfo info = shortcuts.get(i);
            if (info.getDescription() == null ||
                info.getShortcuts().size() == 0 || 
                !info.getGroupName().equals(groupName))
            {
               continue;
            }
            sb.appendHtmlConstant("<tr><td><strong>");
            sb.appendHtmlConstant(
                  StringUtil.joinStrings(info.getShortcuts(), ", "));
            sb.appendHtmlConstant("</strong></td><td>");
            sb.appendEscaped(info.getDescription());
            sb.appendHtmlConstant("</td></tr>");
         }
         sb.appendHtmlConstant("</table></td>");
      }